//
// File: nullAssignment.cpp
//
// MATLAB Coder version            : 5.4
// C/C++ source code generated on  : 21-Mar-2025 16:18:04
//

// Include Files
#include "nullAssignment.h"
#include "rt_nonfinite.h"
#include "coder_array.h"

// Function Definitions
//
// Arguments    : ::coder::array<double, 2U> &x
//                const ::coder::array<int, 2U> &idx
// Return Type  : void
//
namespace coder {
namespace internal {
void nullAssignment(::coder::array<double, 2U> &x,
                    const ::coder::array<int, 2U> &idx)
{
  array<boolean_T, 2U> b;
  int i;
  int nrows;
  int nrowx;
  nrowx = x.size(0);
  if (idx.size(1) == 1) {
    nrows = x.size(0) - 1;
    i = idx[0];
    for (nrowx = 0; nrowx < 2; nrowx++) {
      for (int b_i{i}; b_i <= nrows; b_i++) {
        x[(b_i + x.size(0) * nrowx) - 1] = x[b_i + x.size(0) * nrowx];
      }
    }
  } else {
    int b_i;
    b.set_size(1, x.size(0));
    nrows = x.size(0);
    for (i = 0; i < nrows; i++) {
      b[i] = false;
    }
    i = idx.size(1);
    for (int k{0}; k < i; k++) {
      b[idx[k] - 1] = true;
    }
    nrows = 0;
    i = b.size(1);
    for (int k{0}; k < i; k++) {
      nrows += b[k];
    }
    nrows = x.size(0) - nrows;
    b_i = 0;
    for (int k{0}; k < nrowx; k++) {
      if ((k + 1 > b.size(1)) || (!b[k])) {
        x[b_i] = x[k];
        x[b_i + x.size(0)] = x[k + x.size(0)];
        b_i++;
      }
    }
  }
  if (nrows < 1) {
    nrows = 0;
  }
  for (i = 0; i < 2; i++) {
    for (nrowx = 0; nrowx < nrows; nrowx++) {
      x[nrowx + nrows * i] = x[nrowx + x.size(0) * i];
    }
  }
  x.set_size(nrows, 2);
}

} // namespace internal
} // namespace coder

//
// File trailer for nullAssignment.cpp
//
// [EOF]
//
